package com.ibm.framework.exception.logger;

import java.io.PrintWriter;
import java.io.StringWriter;
import static com.ibm.framework.exception.model.ConfigConstant.*;

/**
 * 功能描述： 异常日志信息的Builders
 * 
 * @author v_pinzhao
 * 
 */
public class LogMessageBuilder {

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉 异常信息构建
     * 
     * @param message 异常信息
     * @param thr 异常原因
     * @return 构建后的详细异常信息
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static String build(String message, Throwable thr) {
        StringBuilder sb = new StringBuilder(LINE_SEPARATOR).append(message).append(LINE_SEPARATOR);
        String stackTrace = getExceptionStackTrace(thr);
        sb.append(stackTrace);

        return sb.toString();
    }

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉 返回异常信息堆栈
     * 
     * @param ex 异常原因
     * @return 异常信息堆栈
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static String getExceptionStackTrace(Throwable ex) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        ex.printStackTrace(pw);
        pw.close();
        return sw.toString();
    }

    /**
     * 私有构造函数LogMessageBuilder
     */
    private LogMessageBuilder() {

    }
}
